/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.controler.jdbc;

import com.camachosanchez.bean.Baterias;
import com.camachosanchez.bean.Categorias;
import com.camachosanchez.bean.DistribuidoresBaterias;
import com.camachosanchez.bean.MarcasBaterias;
import com.camachosanchez.util.ConexionSQL;
import com.camachosanchez.util.Constantes;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author ZULLY
 */
public class BateriasJdbcControler {
    
    public List<Baterias> findAll(){
        List<Baterias> lst = new ArrayList<Baterias>();
        Connection cn = ConexionSQL.obtenerConexion();
        Statement st;
        try {
            st = cn.createStatement();
            ResultSet rs = st.executeQuery("SELECT b.id, b.codigo, m.nombre, d.nombre, b.nro_placas, "
                    + "b.fecha_montaje, b.id_categoria, c.nombre, b.inf_montaje "
                    + "FROM baterias b LEFT JOIN marcas_baterias m ON b.id_marca = m.id "
                    + "LEFT JOIN distribuidores_baterias d ON b.id_distribuidor = d.id "
                    + "INNER JOIN categorias c ON b.id_categoria = c.id "
                    + "WHERE b.estado = 1 AND id_categoria <> " + Constantes.CATEGORIA_CEMENTERIO);
            while (rs.next()) {
                Baterias b = new Baterias();
                b.setId(rs.getInt(1));
                b.setCodigo(rs.getString(2));

                MarcasBaterias m = new MarcasBaterias();
                m.setNombre(rs.getString(3));
                b.setIdMarca(m);

                DistribuidoresBaterias d = new DistribuidoresBaterias();
                d.setNombre(rs.getString(4));
                b.setIdDistribuidor(d);
                
                b.setNroPlacas(rs.getInt(5));
                b.setFechaMontaje(rs.getDate(6));
                
                Categorias c = new Categorias(rs.getInt(7));
                c.setNombre(rs.getString(8));
                b.setIdCategoria(c);
                b.setInfMontaje(rs.getString(9));
                
                lst.add(b);
            }
            rs.close();
            st.close();
            cn.close();
        } catch (SQLException ex) {
            Logger.getLogger(NeumaticosJdbcControler.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lst;
    }
    
    public List<Baterias> findBateriasStock(){
        List<Baterias> baterias = new ArrayList<Baterias>();
        try {
            Connection cn = ConexionSQL.obtenerConexion();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery("SELECT b.id, b.codigo, m.nombre, d.nombre, b.nro_placas, b.id_categoria "
                    + "FROM baterias b LEFT JOIN marcas_baterias m ON b.id_marca = m.id "
                    + "LEFT JOIN distribuidores_baterias d ON b.id_distribuidor = d.id "
                    + "INNER JOIN categorias c ON b.id_categoria = c.id "
                    + "WHERE b.estado=1 AND (b.id_categoria=1 or b.id_categoria=7);");
            while (rs.next()) {
                Baterias b = new Baterias();
                b.setId(rs.getInt(1));
                b.setCodigo(rs.getString(2));

                MarcasBaterias m = new MarcasBaterias();
                m.setNombre(rs.getString(3));
                b.setIdMarca(m);

                DistribuidoresBaterias d = new DistribuidoresBaterias();
                d.setNombre(rs.getString(4));
                b.setIdDistribuidor(d);
                b.setNroPlacas(rs.getInt(5));
                b.setIdCategoria(new Categorias(rs.getInt(6)));
                
                baterias.add(b);
            }
            rs.close();
            st.close();
            cn.close();
        } catch (Exception ex) {
            Logger.getLogger(NeumaticosJdbcControler.class.getName()).log(Level.SEVERE, null, ex);
        }
        return baterias;
    }
    
    public byte eliminarBateria(int id) {
        byte estado = 0;
        try {
            Connection cn = ConexionSQL.obtenerConexion();
            CallableStatement sp = cn.prepareCall("{ call eliminar_bateria(?) }");
            sp.setInt("idBateria", id);
            ResultSet rs = sp.executeQuery();
            if(rs.next()){
                estado = rs.getByte(1);
            }
            rs.close();
            sp.close();
            cn.close();
        } catch (SQLException ex) {
            Logger.getLogger(NeumaticosJdbcControler.class.getName()).log(Level.SEVERE, null, ex);
        }
        return estado;
    }
}
